/**
 * Super Agent Party Chat —— 兼容「静态双击」和「Node 微服务」两种启动方式
 * 1. 有进程参数 → 走 Express，监听端口，让 FastAPI 反向代理
 * 2. 无进程参数 → 直接打开 index.html（静态文件模式）
 */
const { spawn } = require('child_process');
const path = require('path');
const fs = require('fs');

const EXT_DIR = __dirname;
const HTML_FILE = path.join(EXT_DIR, 'index.html');

/* ---------- 场景①：被 FastAPI 以「node index.js <port>」唤起 ---------- */
if (process.argv[2]) {
  const PORT = parseInt(process.argv[2], 10);
  const express = require('express');
  const app = express();

  // 1. 把静态资源全部托管（marked、prism、css、fa 字体等）
  app.use(express.static(EXT_DIR));

  // 2. 根路由返回聊天界面
  app.get('/', (req, res) => res.sendFile(HTML_FILE));

  // 3. 健康检查（FastAPI 可以调用它判断子进程是否就绪）
  app.get('/health', (_, res) => res.json({ status: 'ok' }));

  // 4. 启动
    app.listen(PORT, '127.0.0.1', () => {
    const msg = `[ext-chat] Node service ready at http://127.0.0.1:${PORT}`;
    console.log(msg);
    fs.appendFileSync(__dirname + '/node.log', msg + '\n');
    // 可选：把端口落到磁盘，方便调试
    fs.writeFileSync(__dirname + '/port.log', String(PORT));
    });
  return;
}

/* ---------- 场景②：用户双击 index.js 或在终端里只输入「node index.js」 ---------- */
// 根据平台选浏览器
const BROWSER = process.platform === 'darwin' ? 'open'
              : process.platform === 'win32' ? 'start'
              : 'xdg-open';
spawn(BROWSER, [HTML_FILE], { shell: true, stdio: 'ignore' });
console.log('[ext-chat] 已尝试在默认浏览器打开', HTML_FILE);